'use strict';

const crypto = require('crypto');
const _ = require('lodash');

module.exports = {
    /**
     * MD5加密字符串
     * @param {String} str 传入值
     * @returns 加密后的字符串
     */
    toMD5(str) {
        return crypto.createHash('md5').update(str).digest('hex');
    },

    /**
     * 把任意值转化为整数的方法
     * @param {*} val 任意值
     * @param {Number} [defaultValue] 默认值
     * @returns 返回值
     */
    toInt(val, defaultValue = 0) {
        return parseInt(val, 10) || defaultValue;
    },

    /**
     * 将任意值转化为数值数组
     * @param {*} val 任意值
     * @returns 返回值
     */
    toIntArr(val) {
        return _.map(_.split(val, ','), val => _.toInteger(val));
    },

    /**
     * 生成n位数字的方法
     * @param {Number} len 生成随机数位数
     * @returns 返回生成的随机数字符串
     */
    generateNumbers(len = 6) {
        const nums = [];
        for (let i = 0; i < len; i++) {
            nums.push(_.random(1, 9));
        }
        return nums.join('');
    },

    /**
     * 去除字符串中的特殊符号
     * @param {String} str 字符串
     * @returns 处理结果
     */
    textFilter(str) {
        return `${str}`.replace(/[^\u4e00-\u9fa5\w]/g, '');
    },
};
